package com.platform.core.service;

import com.querydsl.core.types.Predicate;
import com.platform.core.entity.SysDictGroup;
import com.platform.dto.DictGroupQo;
import org.springframework.data.domain.Page;
import org.springframework.data.domain.Pageable;
import org.springframework.util.MultiValueMap;

/**
 * Description: 字典组-Service接口
 *
 * @author libin Created on 2019/7/17
 **/
public interface SysDictGroupService extends BaseEntityBiz<SysDictGroup> {

    /**
     * 分页查询
     *
     * @param predicate  查询条件
     * @param pageable   分页参数
     * @param parameters 查询参数
     * @return 列表
     */
    Page<DictGroupQo> queryGroups(Predicate predicate, Pageable pageable, MultiValueMap<String, String> parameters);

    /**
     * 添加字典
     *
     * @param dictGroupQo 字典信息
     * @return DictGroupQo
     */
    DictGroupQo create(DictGroupQo dictGroupQo);

    /**
     * 修改字典
     *
     * @param dictGroupQo 字典信息
     * @return DictGroupQo
     */
    DictGroupQo modify(DictGroupQo dictGroupQo);

    /**
     * 验证字典编码是否重复
     * @param id ID（修改时用）
     * @param groupCode 编码
     * @return Long
     */
    long validCode(String id, String groupCode);

    /**
     * 验证字典名称是否重复
     * @param id ID（修改时用）
     * @param groupName 名称
     * @return Long
     */
    long validName(String id, String groupName);

    /**
     * 根据字典项查询字典组
     * @param groupItem 字典项
     * @return DictGroupQo
     */
    DictGroupQo queryGroupByItem(String groupItem);

    /**
     * 根据字典编码查询字典
     * @param groupCode 字典编码
     * @return DictGroupQo
     */
    DictGroupQo queryGroupNameByGroupCode(String groupCode);

}
